package cn.weiyang.service.impl;

import cn.weiyang.dao.EmpDao;
import cn.weiyang.model.Emp;
import cn.weiyang.model.Page;
import cn.weiyang.service.EmpService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * Created by Administrator on 2017/7/18.
 */
@Service
public class EmpServiceImpl implements EmpService {
    private static Logger logger=LogManager.getLogger(EmpService.class);
    @Autowired
    private EmpDao empDao;
    /**
     * 根据员工号查找员工
     * @param emp
     * @return
     */
    public Emp findEmp(Emp emp) {
        return empDao.findEmp(emp);
    }

    /**
     * 根据条件模糊搜索员工信息
     * @param map
     * @return
     */
    public Page getLikeEmp(Map<String, Object> map) {
        Page page=new Page();
        // 根据条件查询符合的用户列表记录总数，赋值给page的totalNum变量
        page.setTotalNum(empDao.getLikeEmpCount(map));
        // 从请求参数中获取每页大小
        int pageSize=Integer.parseInt(String.valueOf(map.get("pageSize")));
        page.setPageSize(pageSize);
        // 从请求参数中获取当前页码
        int currPage=1;
        if(null==(map.get("pageNum"))||"".equals(map.get("pageNum"))||"null".equals(map.get("pageNum"))){
            currPage=1;
        }else{
            currPage=Integer.parseInt(String.valueOf(map.get("pageNum")));
        }
        page.setCurrPage(currPage);
        // 动态计算总页数(总记录数 除以 每页大小，加上 总页数 求余 每页大小，如果余数不为0，则 加 1，否则 加 0 )
        int totalPage=page.getTotalNum()%pageSize==0?page.getTotalNum()/pageSize:page.getTotalNum()/pageSize+1;
        page.setTotalPage(totalPage);
        // 根据条件查询符合的用户列表记录，赋值给page的result变量
        page.setResult(empDao.getLikeEmp(map));
        return page;
    }
    /**
     * 根据条件模糊搜索员工数量
     * @param map
     * @return
     */
    public int getLikeEmpCount(Map<String, Object> map) {
        return empDao.getLikeEmpCount(map);
    }
    /**
     * 增加新员工
     * @param emp
     * @return
     */
    public int addEmp(Emp emp) {
        return empDao.addEmp(emp);
    }
    /**
     * 修改员工信息
     * @param emp
     * @return
     */
    public int updateEmp(Emp emp) {
        return empDao.updateEmp(emp);
    }
    /**
     * 删除员工
     * @param emp
     * @return
     */
    public int delEmp(Emp emp) {
        return empDao.delEmp(emp);
    }

    public EmpDao getEmpDao() {
        return empDao;
    }

    public void setEmpDao(EmpDao empDao) {
        this.empDao = empDao;
    }
}
